home *** CD-ROM | disk | FTP | other *** search
/ Technotools / Technotools (Chestnut CD-ROM)(1993).ISO / lang_c / cug191 / sound.h < prev    next >
Text File  |  1986-05-25  |  4KB  |  115 lines

  1.  
  2. /*  SOUND.H                             Last update: 25 Feb 86  */
  3.  
  4. /* ------------------------------------------------------------ */
  5. /*      This is a portion of the SOUND EFFECTS LIBRARY.         */
  6. /*                                                              */
  7. /*      Copyright (C) 1986 by Paul Canniff.                     */
  8. /*      All rights reserved.                                    */
  9. /*                                                              */
  10. /*      This library has been placed into the public domain     */
  11. /*      by the author.  Use is granted for non-commercial       */
  12. /*      pusposes, or as an IMBEDDED PORTION of a commercial     */
  13. /*      product.                                                */
  14. /*                                                              */
  15. /*      Paul Canniff                                            */
  16. /*      PO Box 1056                                             */
  17. /*      Marlton, NJ 08053                                       */
  18. /*                                                              */
  19. /*      CompuServe ID: 73047,3715                               */
  20. /*                                                              */
  21. /* ------------------------------------------------------------ */
  22.  
  23.  
  24. /* ---------------- */
  25. /*  COMPILER FLAGS  */
  26. /*  Set one only!   */
  27. /* ---------------- */
  28.  
  29. #define C_AZTEC   0
  30. #define C_ECOSOFT 0
  31. #define C_LATTICE 1
  32.  
  33. /* ---------------------------------- */
  34. /*         Sound Buffer Size          */
  35. /*   See Tech Info in documentation.  */
  36. /* ---------------------------------- */
  37.  
  38. #define SND_BUFFSIZE 64
  39.  
  40.  
  41. /* ------------------- */
  42. /*  I/O Ports for IBM  */
  43. /* ------------------- */
  44.  
  45. #define SPKTMR 0x42     /* 8253 port */
  46. #define KBCTL 0x61      /* PPI interface */
  47.  
  48.  
  49. /* ------------------- */
  50. /*  Clock information  */
  51. /* ------------------- */
  52.  
  53. #define STD_CLOCK 119318000L     /* Base clock in MHz times 100 */
  54. #define TICK10 182               /* System tick rate per sec times 10 */
  55.  
  56.     /* FREQ2CTR translates a frequency to an 8253 counter value */
  57.     /* MS2TICKS translates a millesecond count to a system tick count */
  58.  
  59. #define FREQ2CTR(f)  (f == 0 ? 0 : ((unsigned)(STD_CLOCK/(long)(f))))
  60. #define MS2TICKS(m)  ((unsigned) ((((long)(m)*(long)TICK10)+5000) / 10000L) )
  61.  
  62. #define MAXFREQ (STD_CLOCK)             /* Max generatable frequency */
  63. #define MINFREQ (STD_CLOCK/MAXUINT)     /* Min generatable frequency */
  64.  
  65.  
  66. /* ------------------------------- */
  67. /*  Music Defaults and Structures  */
  68. /* ------------------------------- */
  69.  
  70. #define DEF_OCTAVE 4            /* Default Octave for play() */
  71. #define DEF_TEMPO  32           /* Default Tempo for play() */
  72.  
  73. struct sound_element { long freq;  unsigned dur; };
  74. struct raw_sound { unsigned count, ticks; };
  75.  
  76.  
  77. /* -------------------------------- */
  78. /*  Compiler-Dependent Definitions  */
  79. /* -------------------------------- */
  80.  
  81. #if C_AZTEC
  82. #define outp(x,v) outport(x,v)
  83. #define inp(x) inport(x)
  84. #endif
  85.  
  86. #if C_ECOSOFT
  87. #define outp(x,v) outportb(x,v)
  88. #define inp(x) inportb(x)
  89. #endif
  90.  
  91. #if C_LATTICE
  92. #define void int
  93. #endif
  94.  
  95. /* ---------------------------------------- */
  96. /*  Symbols Needed, But Not Always Defined  */
  97. /* ---------------------------------------- */
  98.  
  99. #ifndef isdigit
  100. #define isdigit(x) ((x) >= '0' && (x) <= '9')
  101. #endif
  102.  
  103. #ifndef MAXUINT
  104. #define MAXUINT 0xffff  /* Maximum unsigned integer value */
  105. #endif
  106.  
  107. #ifndef MAXINT
  108. #define MAXINT 0x7fff   /* Maximum signed integer value */
  109. #endif
  110.  
  111. /* ---------------- */
  112. /*  End of SOUND.H  */
  113. /* ---------------- */
  114.  
  115.